package club.caihappy.store.aop;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

/**
 * 记录业务层执行方法耗时的切面类
 * Created by DELL on 2022/3/30
 **/
@Component //将当前类的对象交由spring来维护
@Aspect   //声明当前类为切面类
public class TimerAspect {
    /**
     * 定义切面方法，使用环绕通知的方式来编写。
     *
     * @param pjp ProceedingJoinPoint接口表示连接点，目标方法的对象
     * @return
     */
    //将当前环绕通知映射到某个页面上（指定连接点）
    @Around("execution(* club.caihappy.store.service.impl.*.*(..))")
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        long start = System.currentTimeMillis();
        Object res = pjp.proceed();
        long end = System.currentTimeMillis();
        System.out.println("耗时: " + (end - start));
        return res;
    }
}
